1. Field of the Invention
The present invention relates to networks with open application programming interfaces, and more particularly, a method of handling overlapping notification requests in such networks.
2. Description of Related Art
The well-known Parlay specification, as well as other specifications such as OSA and JAIN, define an architecture that enables service application developers to make use of network functionality through an open standardized interface. The Parlay Application Programming Interface (API) contains the Framework APIs and Service APIs for Call Control, User Interaction, Messaging, and others. Similarly, OSA contains Service Capability Servers that include the Framework, Call Control, User Interaction, and others. OSA is based on Parlay, but emphasizes mobility. The Parlay Call Control API contains the interfaces IpCallControlManager and IpAppCallControlManager. The IpCallControlManager offers the enableCallNotification( ) method, which can be used by client applications to indicate their interest to be notified when certain call events take place. Its peer, the IpAppCallControlManager, offers the callEventNotify( ) method, which can be used to inform the application of the occurrence of a call event.
Events, such as call events in Parlay, are identified by event criteria in a notification request. The event criteria define the events required by the application. For example, the event criteria consist of OriginatingAddress, DestinationAddress, CallEventName, CallNotificationType, and MonitorMode in the enableCallNotification( ) method of Parlay. Actual events that meet these criteria are reported via the callEventNotify( ) method.
Because the method according to the present invention will be described, in part, based on examples with respect to Parlay, the event criteria of this specification will now be defined.
The OriginatingAddress and DestinationAddress are assumed to be E.164 addresses of length at least one satisfying {0, 1, . . . , 9}n{?}m{*}, and n, m≧0. In other words, address strings have length at least one, start with zero or more digits followed by zero or more question marks followed by zero or one *. The wildcard ‘?’ stands for any digit, and ‘*’ stands for a sequence of zero or more digits. Examples of valid addresses are 8, ?, *, 2?, 22??, 1*, and 65??*.
CallEventName specifies a call event. Possible events are OFFHOOK_EVENT=1, ADDRESS_COLLECTED_EVENT=2, ADDRESS_ANALYSED_EVENT=4, CALLED_PARTY_BUSY=8, CALLED_PARTY_UNREACHABLE=16, NO_ANSWER_FROM_CALLED_PARTY=32, ROUTE_SELECT_FAILURE=64, ANSWER_FROM_CALL_PARTY=128.
The CallNotificationType P_ORIGINATING specifies that the application is interested in triggers generated by the originating call state model, while P_TERMINATING specifies that the application is interested in triggers generated by the terminating call state model. This terminology is derived from the intelligent network.
The MonitorMode INTERRUPT specifies that the application will get access to the call object when it receives the callEventNotify( ) method, and control how call processing proceeds, while NOTIFY specifies that the application will only get a notification that a certain call state occurred in the network.
The Parlay specifications state that if some application issues a notification request with criteria that overlap the specified criteria in previously received notification requests, the newly issued request is refused. For example, in Parlay, the criteria are said to overlap if both originating and terminating ranges overlap and the same number plan is used and the same CallNotificationType is used. The point is that it should not be possible for applications to request access to the same object more than once. In Parlay and OSA, overlap can occur only between event criteria for which the monitor mode is set to INTERRUPT, since if the monitor mode is set to NOTIFY, no access to a call object is requested.
The approach of not allowing overlap between event criteria is robust, but has a number of disadvantages. For example,                A single application is able to block requests for notifications from other applications. For example, in Parlay and OSA, notification requests with monitor mode INTERRUPT are blocked by using the event criteria OriginatingAddress=* and DestinationAddress=*.        New requests with overlapping event criteria are refused, even if there is only partial overlap with criteria in already requested notifications. For example, in Parlay and OSA, if OriginatingAddress=11??, DestinationAddress=2222, CallEventName=4, CallNotificationType=P_ORIGINATING, MonitorMode=INTERRUPT is already requested, then OriginatingAddress=1111, DestinationAddress=2???, CallEventName=4, CallNotificationType=P_ORIGINATING, MonitorMode=INTERRUPT is refused, although there is only overlap for one call event.        If applications disable or change notifications (e.g., using the disableCallNotification( ) or changeCallNotification( ) methods in Parlay and OSA), other applications, whose requests might previously be refused, are unaware of these modifications. As a result, they might be missing events while this is not strictly necessary.        It is not possible to control dispatching of actual events to applications. An event goes to the application that requested the event first.        